Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.09.2012, 13:25
Новичок на форуме
Отправить личное сообщение для plazmagod Посмотреть профиль Найти все сообщения от plazmagod
 
Регистрация: 09.02.2012
Сообщений: 7

Массив округляет Long
Использую jquery 1.7.2

Забираю из json вот такое значение: 250155863787057152 . В JSON всё отображает нормально. Тут же обращаюсь в success части к data[0].id, выдаёт 250155863787057150. Как бороться с таким поведением?
Ответить с цитированием
  #2 (permalink)  
Старый 24.09.2012, 14:03
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,596

alert(250155863787057152 === 250155863787057150)

В Js нет Long, все числа хранятся в формате с плавающей точкой, потому для малых и больших чисел возможны подобные казусы.
Вариантов 2:
1. Забить и не использовать js для того для чего он не предназначен.
2. Нагуглить библиотеку(она есть) имитирующую работу с длинными числами.
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 24.09.2012, 14:40
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от Aetae Посмотреть сообщение
1. Забить и не использовать js для того для чего он не предназначен.
ну-ну. в библиотке socket.io подобные числа используются как идентификаторы сессий. не предназначен для этого js, говорите?

plazmagod могу подсказать как решить эту проблему - приводите числа к типу-строке.
так, если есть у вас переменная i с длинным числом, сделайте
i = '' + i;
и вуаля, ничего больше не потеряется.
ну а если вдруг понадобится снова сделать i числом -
i = +i;


удачи.
Ответить с цитированием
  #4 (permalink)  
Старый 24.09.2012, 14:44
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,596

Сообщение от keen Посмотреть сообщение
ну а если вдруг понадобится снова сделать i числом -
i = +i;
Только число в таком случае всё рано будет уже не то.)
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 24.09.2012, 14:48
Аватар для keen
Профессор
Отправить личное сообщение для keen Посмотреть профиль Найти все сообщения от keen
 
Регистрация: 28.03.2012
Сообщений: 376

Сообщение от Aetae Посмотреть сообщение
Только число в таком случае всё рано будет уже не то.)
ну не то что бы не то, но близкое к тому - числа такого порядка, как вы верно сказали выше, хранятся в виде с плавающей точкой.

и да - тут плясать надо от задачи. если это какие-то важные вычисления - искать другой путь (например погуглить сторонние библиотеки), если же (что более вероятно) это id - работать с этими данными как со строками.
Ответить с цитированием
  #6 (permalink)  
Старый 24.09.2012, 14:56
Новичок на форуме
Отправить личное сообщение для plazmagod Посмотреть профиль Найти все сообщения от plazmagod
 
Регистрация: 09.02.2012
Сообщений: 7

Да, придётся выводить с сервера в стринг-формате. А вообще в принципе до помещения в объект data jquery можно перехватывать значения? Или свой обработчик надо писать?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли как-то структурировать массив match? dump Общие вопросы Javascript 1 29.07.2012 12:19
Создать массив не содержащие данные другого масива KamalovRadik Общие вопросы Javascript 1 05.09.2011 03:30
как запихнуть в массив оператор ? mitiya Общие вопросы Javascript 2 09.02.2011 18:57
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30